<!--
 * @Author: your name
 * @Date: 2020-07-01 23:52:09
 * @LastEditTime: 2020-07-06 15:33:11
 * @LastEditors: Please set LastEditors
 * @Description: tap事件
 * @FilePath: \移动web\MobileWeb\day2\jdM\demo\11-tap事件.html
--> 
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <title>Title</title>
    <style>
        body {
            margin: 0;
            padding: 0;
        }

        .box {
            width: 200px;
            height: 200px;
            background: pink;
            float: left;
        }
    </style>
</head>
<body>
<div class="box"></div>
<!-- 
1.tap事件   轻击 轻触   （响应速度快）
2.移动端也有click事件   （在移动端为了区分是滑动还是点击，
click点击延迟300ms）
3.影响用户体验  响应太慢了。
4.解决方案
4.1 使用tap事件（不是移动端原生事件，通过touch相关事件衍生过来）
（zepto.js tap事件)了解其原理
4.2 使用一个叫：fastclick.js提供移动端click响应速度的
4.2.1 下载：https://cdn.bootcss.com/fastclick/1.0.6/fastclick.min.js
4.2.2 使用：
 -->
<script src="../js/fastclick.min.js"></script>
<script>
    // 当前的dom元素加载完成
    document.addEventListener('DOMContentLoaded',function() {
        // 初始化方法
        FastClick.attach(document.body);
    },false);
    // 正常使用click事件就可以了
</script>
<script>
    window.onload = function () {
        // 使用tap事件
        // 1.相应的速度比click要快      150ms
        // 2.不能滑动
        var bindTapEvent = function (dom,callback) {
            // 事件的执行顺序
            // 在谷歌浏览器模拟看不到300ms的效果
            // 在真机上面才能看到延迟效果
            var startTime = 0;
            var isMove = false;
            dom.addEventListener('touchstart',function (e) {
                //console.log('touchstart');
                startTime = Date.now();
                // Date.now();
            });
            dom.addEventListener('touchmove',function (e) {
                //console.log('touchmove');
                isMove = true;
            });
            dom.addEventListener('touchend',function (e) {
                //console.log('touchend');
                // console.log((Date.now() - startTime));
                if((Date.now() - startTime) < 150 && !isMove) {
                    callback && callback.call(this,e);
                }
                startTime = 0;
                isMove = false;
            });
            /*dom.addEventListener('click',function () {
             //console.log('click');
             });*/
        }
        bindTapEvent(document.querySelector('.box'), function (e) {
            console.log(this);
            console.log(e);
            console.log('tap事件')
        });
    }
</script>
</body>
</html>